package com.zzq.my.jetpacks.net.rxhttp

import android.app.Application
import com.localebro.okhttpprofiler.OkHttpProfilerInterceptor
import com.zzq.my.jetpacks.net.BuildConfig
import com.zzq.my.jetpacks.net.base.RequestInterceptor
import com.zzq.my.jetpacks.net.base.RetrofitClient
import okhttp3.ConnectionPool
import okhttp3.OkHttpClient
import rxhttp.RxHttpPlugins
import java.util.concurrent.TimeUnit

/**
 * 描述：class describe
 * 作者：zhuangzeqin
 * 时间: 2022/1/25-16:21
 * 邮箱：zzq@eeepay.cn
 * 备注:
 */
class RxHttpManager {
    val TIMEOUT = 10L

    fun init(app:Application){
        // //是否开启调试模式，开启后，logcat过滤RxHttp，即可看到整个请求流程日志
       var okhttpClient = getOkHttpClient();
        //debug 模式下添加拦截器
//        if (BuildConfig.DEBUG) {
           // okhttpClient.newBuilder().addInterceptor(OkHttpProfilerInterceptor())
//        }
        RxHttpPlugins.init(okhttpClient).setDebug(BuildConfig.DEBUG,true)
//            .setCache(File, long, CacheMode)  //配置缓存目录，最大size及缓存模式
//            .setExcludeCacheKeys(String...)   //设置一些key，不参与cacheKey的组拼
//        .setResultDecoder(Function)       //设置数据解密/解码器，非必须
//            .setConverter(IConverter)         //设置全局的转换器，非必须
//            .setOnParamAssembly(Function);    //设置公共参数/请求头回调
    }

    /**
     * 创建okhttpClient 对象
     */
    fun getOkHttpClient(): OkHttpClient {
        return OkHttpClient.Builder()
            .callTimeout(RetrofitClient.TIMEOUT, TimeUnit.SECONDS) //完整的请求超时时长，从发起请求到接收返回数据
            .connectTimeout(RetrofitClient.TIMEOUT, TimeUnit.SECONDS) //与服务器建立连接时长
            .readTimeout(RetrofitClient.TIMEOUT, TimeUnit.SECONDS) //读取服务器返回数据的时长
            .writeTimeout(RetrofitClient.TIMEOUT, TimeUnit.SECONDS) //向服务器写入数据的时长
            .retryOnConnectionFailure(false)//是否重连
            .connectionPool(ConnectionPool(8, 15, TimeUnit.SECONDS))
//            .addInterceptor(getLoggingInterceptor())//日志打印
            .addInterceptor(RequestInterceptor())//请求参数加密
            .addInterceptor(OkHttpProfilerInterceptor())
            .build()
    }
}